// 配置axios基地址
axios.defaults.baseURL = 'https://hmajax.itheima.net'

// 抽取轻提示
function showToast(msg) {
    // 1.获取页面的toast元素
    const toastDom = document.querySelector('.my-toast')
    // 2.实例化toast组件
    const toast = new bootstrap.Toast(toastDom)
    // 3.更改显示的内容
    document.querySelector('.toast-body').innerText = msg
    // 4.显示toast组件
    toast.show()
}
// showToast('测试成功！')

//抽取校验函数
function checkToken() {
    // 1.本地缓存取出token
    // 2.判断token是否存在，如果不存在
    //      2.1提示用户登录
    //      2.2返回登录页

    const token = localStorage.getItem('token')

    if (token === null) {
        showToast('用户未登录，请先登录！')
        setTimeout(function () {
            location.href = './login.html'
        }, 1000)
    }
}

// 渲染用户名的函数
function renderUsername(selector) {
    // 1.拿到用户名
    // 2.替换页面的内容
    const username = localStorage.getItem('username')
    document.querySelector(selector).innerText = username
}

// 抽取退出函数
function logout() {
    document.querySelector('#logout').addEventListener('click', function () {
        // 1.清空登录信息
        // 2.提示用户
        // 3.跳转登录页
        localStorage.removeItem('token')
        localStorage.removeItem('username')

        showToast('退出成功')

        setTimeout(function () {
            location.href = './login.html'
        }, 1000)
    })
}
// 拦截器
// 1.请求拦截器
// axios.interceptors.request.use(成功请求操作，失败请求的操作)
axios.interceptors.request.use(function (config) {
    // 成功的请求走这里
    // config请求配置
    // 统一给每一个请求都携带token
    const token = localStorage.getItem('token')
    if (token) {
        config.headers['Authorization'] = token
    }
    return config
}, function (err) {
    // 失败的请求走这里(极少数)
    // 模拟一个失败的请求结果
    return Promise.reject(err)
})
// 2.响应拦截器
axios.interceptors.response.use(function (response) {
    // 响应结果的处理
    // 不要axios包装的那一层数据，只要接口返回的内容
    return response.data
}, function (err) {
    // 1.提示信息
    showToast(err.response.data.message)
    // 2.判断状态码是否为401->登录信息清空，返回登录页
    if (err.response.status === 401) {
        localStorage.removeItem('token')
        localStorage.removeItem('username')
        setTimeout(function () {
            location.href = './login.html'
        }, 1000)
    } else if (err.response.status === 404) {
        // 判断状态码是否为404->跳转404页
        setTimeout(function () {
            location.href = './404.html'
        }, 1000)
    }
    return Promise.reject(err)
})

// 请求拦截器：请求配置项进行加工
// 相应拦截器：对响应结果进行加工